package com.ywk.base.dataStructure.sort;

import java.text.SimpleDateFormat;
import java.util.Date;

//选择排序：（从大到小排序）假定第一个数是最大的数，然后与后面的每一个数对比，若后面的数还要大则交换位置，然后在假定第二个，以此类推
public class SelectSort {

	public static void main(String[] args) {
		// int[] nums={3,5,1,8,4,7};
		int[] nums = new int[80000];
		for (int i = 0; i < nums.length; i++) {
			nums[i] = (int) (Math.random() * 80000);
		}
		Date d1 = new Date();
		SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 日期格式
		System.out.println("排序前的时间：" + s.format(d1));

		for (int i = 0; i < nums.length - 1; i++) {
			int max = nums[i];
			int maxIndex = i;
			for (int j = 1 + i; j < nums.length; j++) {
				if (max < nums[j]) {
					// 若在此处交换，每找到要大的都进行交换非常消耗时间，
					// 因此必须在外面交换，当找到最大值再交换，只交换一次，能节省很多时间（关键点：减少交换次数）
					max = nums[j];
					maxIndex = j;
				}
			}
			if (maxIndex != i) {
				nums[maxIndex] = nums[i];
				nums[i] = max;
			}

			// System.out.println("第"+(i+1)+"趟排序后"+Arrays.toString(nums));
		}
		Date d2 = new Date();
		System.out.println("排序后的时间：" + s.format(d2));
	}

}
